package com.rede.didiok.user.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rede.didiok.common.dto.user.UserEquityRecordDto;
import com.rede.didiok.user.entity.UserEquityRecordEntity;

/**
 * 用户权益记录表
 *
 * @author Rede
 * @email didiok@foxmail.com
 * @date 2023-08-07 18:21:17
 */
public interface UserEquityRecordService extends IService<UserEquityRecordEntity> {

    /**
     * 获取用户权益列表（分页）
     *
     * @param userEquityRecordVO
     * @return
     */
    IPage<UserEquityRecordEntity> getPageList(UserEquityRecordDto userEquityRecordVO);

    /**
     * 获取用户权益列表
     *
     * @param userEquityRecordVO
     * @return
     */
    List<UserEquityRecordEntity> getList(UserEquityRecordDto userEquityRecordVO);

    /**
     * 获取用户权益数
     *
     * @param userEquityRecordVO
     * @return
     */
    Integer getCount(UserEquityRecordDto userEquityRecordVO);

    /**
     * 消耗用户签到卡
     *
     * @param userUid
     * @param cardCount 消耗签到卡数量
     */
    Boolean useSignInCards(String userUid, Long cardCount);

    /**
     * 向指定用户发放签到卡
     *
     * @param userUid
     * @param cardCount
     * @return
     */
    Boolean sendSignInCards(String userUid, int cardCount);

    /**
     * 添加用户权益资源
     * @param userEquityRecordVO
     * @return
     */
    void addUserEquityRecord(UserEquityRecordDto userEquityRecordVO);

    /**
     * 批量发放签到卡
     *
     * @return
     */
    Boolean batchSendSignInCard();

}

